package com.b2b.constant;

/**
 * 版权：上海极和信息科技有限公司
 * 功能：操作返回状态
 * 作者：朱伟峰
 * 邮箱：zhuweifeng24@gmail.com
 * 日期：2016年11月22日
 */
public enum ResultEnum implements CodeInterFace
{
	// 系统
	SUCCESS(1000, "操作成功"),
	ERROR(1001, "操作失败"),
	ERR_CATCH(1002, "操作异常"),
	ERR_NONE(1003, "未知错误"),
	ERR_DAOEXCEPTION(1004, "查询数据库语句有误"),
	ERR_NULLPOINTEREXCEPTION(1005, "调用了未经初始化的对象或者是不存在的对象"),
	ERR_IOEXCEPTION(1006, "IO异常"),
	ERR_CLASSNOTFOUNDEXCEPTION(1007, "指定的类不存在"),
	ERR_ARITHMETICEXCEPTION(1008, "数学运算异常"),
	ERR_ARRAYINDEXOUTOFBOUNDSEXCEPTION(1010, "数组下标越界"),
	ERR_ILLEGALARGUMENTEXCEPTION(1011, "方法的参数错误"),
	ERR_CLASSCASTEXCEPTION(1012, "类型强制转换错误"),
	ERR_PARAMS(1013, "参数异常"),
	ERR_NETWORK_NULL(9996, "网络异常，请稍后再试"),
	ERR_LIST_NOPERMIT(9997, "您无权操作"),
	ERR_LIST_NULL(9998, "暂无数据"),
	ERR_SESSION_NULL(9999, "您的会话已失效，请重新登录"),
	ERR_1110(1110, "记录不存在"),
	
	// 用户模块
	ERR_2000(2000, "会员代码不能为空"),
	ERR_2001(2001, "会员不存在"),
	ERR_2002(2002, "手机号码不能为空"),
	ERR_2003(2003, "密码不能为空"),
	ERR_2004(2004, "手机号已注册"),
	ERR_2005(2005, "用户不存在"),
	ERR_2006(2006, "用户名或密码错误"),
	ERR_2007(2007, "用户更新信息不能为空"),
	ERR_2008(2008, "请先注册"),
	ERR_2009(2009, "密码错误"),
	ERR_2010(2010, "申请成为会员信息不能为空"),
	ERR_2011(2011, "请上传营业执照"),
	ERR_2012(2012, "请上传组织机构代码证"),
	ERR_2013(2013, "请上传组织税务登记证"),
	ERR_2014(2014, "您有未审核的申请，请勿重复提交"),
	ERR_2015(2015, "单位名称不能为空"),
	ERR_2016(2016, "单位类型不能为空"),
	ERR_2017(2017, "您已经是经纪人，无需重复申请"),
	ERR_2018(2018, "申请成为经纪人信息不能为空"),
	ERR_2019(2019, "手机号格式有误"),
	ERR_2020(2020, "请求发送短信验证码太频繁，请稍候再试"),
	ERR_2021(2021, "短信验证码错误"),
	ERR_2022(2022, "短信验证码已过期"),
	ERR_2023(2023, "短信验证错误次数过多"),
	ERR_2024(2024, "短信发送失败"),
	ERR_2025(2025, "验证码不能为空"),
	ERR_2026(2026, "验证码已过期"),
	ERR_2027(2027, "验证码错误"),
	
	// 拍卖模块
	ERR_3000(3000, "会员代码不能为空"),
	ERR_3001(3001, "竞拍代码不能为空"),
	ERR_3002(3002, "竞拍记录不存在"),
	ERR_3003(3003, "标的不存在"),
	ERR_3004(3004, "请选择保证金付款方式"),
	ERR_3005(3005, "您已报名"),
	ERR_3006(3006, "竞拍已结束"),
	ERR_3007(3007, "您不能参与竞拍"),
	ERR_3008(3008, "出价金额不能为空"),
	ERR_3009(3009, "您尚未报名"),
	ERR_3010(3010, "竞拍未开始"),
	ERR_3011(3011, "出价需高于当前价"),
	ERR_3012(3012, "请按正确的加价幅度出价"),
	ERR_3013(3013, "保存出价记录失败"),
	ERR_3014(3014, "用户出价不存在或已失效"),
	ERR_3015(3015, "竞拍信息不能为空"),
	ERR_3016(3016, "出价不能高于最高限价"),
	ERR_3017(3017, "您本次出价需要高于上次出价"),
	ERR_3018(3018, "您本次竞拍数量需大于上次竞拍数量"),
	
	// 招标
	ERR_3100(3100, "招标信息不能为空"),
	ERR_3101(3101, "招标代码不能为空"),
	ERR_3102(3102, "招标记录不存在"),
	ERR_3103(3103, "出价需低于当前价"),
	ERR_3104(3104, "出价不能低于最低限价"),
	ERR_3105(3105, "出价需低于当前价"),
	ERR_3106(3106, "您本次出价需要低于上次出价"),
	ERR_3107(3107, "您本次招标数量需大于上次招标数量"),
	
	// 竞价公共
	ERR_3900(3900, "代码不能为空"),
	ERR_3901(3901, "请选择保证金付款方式"),
	ERR_3902(3902, "保证金金额不能为空"),
	ERR_3903(3903, "记录不存在"),
	ERR_3904(3904, "本次已结束"),
	ERR_3905(3905, "您不能参与自己发布的招标"),
	ERR_3906(3906, "交易参数不存在"),
	ERR_3907(3907, "您已报名"),
	ERR_3908(3908, "需缴纳的保证金金额错误"),
	ERR_3909(3909, "出价金额不能为空"),
	ERR_3910(3910, "您尚未报名"),
	ERR_3911(3911, "尚未开始，请耐心等待"),
	ERR_3912(3912, "请输入数量"),
	ERR_3913(3913, "数量不能低于最低限量"),
	ERR_3914(3914, "数量不能高于最高限量"),
	ERR_3915(3915, "请按正确的调量幅度输入数量"),
	ERR_3916(3916, "数量不能高于保证金缴纳的限量"),
	ERR_3917(3917, "确认成交参数不能为空"),
	ERR_3918(3918, "不能确认未领先的出价"),
	ERR_3919(3919, "请输入正确的确认数量"),
	
	// 消息提醒模块
	ERR_4000(4000, "未设置提醒手机号码"),
	ERR_4001(4001, "该拍卖已设置提醒，请勿重复设置"),
	ERR_4002(4002, "该拍卖未设置提醒，无法取消"),
	ERR_4003(4003, "该拍卖提醒已取消，请勿重复取消"),
	ERR_4004(4004, "提醒手机号码不能为空"),
	
	// 挂牌模块
	ERR_5000(5000, "挂牌信息不能为空"),
	ERR_5001(5001, "请输入必填 的挂牌信息"),
	ERR_5002(5002, "挂牌单号不能为空"),
	ERR_5003(5003, "挂牌记录不存在"),
	ERR_5004(5004, "只能撤销自己的挂牌"),
	ERR_5005(5005, "该挂牌已经设置为已售出"),
	ERR_5006(5006, "该挂牌已经过期"),
	ERR_5007(5007, "该挂牌已经撤销"),
	ERR_5008(5008, "意向单信息不能为空"),
	ERR_5009(5009, "该挂牌已经失效或已售完"),
	ERR_5010(5010, "购买数量不能超过可售数量"),
	ERR_5011(5011, "请输入必填的挂牌下单信息"),
	ERR_5012(5012, "挂牌资源不存在"),
	ERR_5013(5013, "购买数量不能低于最低购买数量"),
	ERR_5014(5014, "挂牌意向单不存在"),
	ERR_5015(5015, "请确认属于您的挂牌意向单"),
	ERR_5016(5016, "请输入挂牌成交确认信息"),
	ERR_5017(5017, "成交数量错误"),
	ERR_5018(5018, "成交单价错误"),
	ERR_5019(5019, "只能取消待确认的挂牌意向单"),
	
	// 资源模块
	ERR_6000(6000, "资源信息不能为空"),
	ERR_6001(6001, "资源ID不能为空"),
	ERR_6100(6100, "预约看粮信息不能为空"),
	ERR_6101(6101, "请输入预约看粮必需的信息"),
	ERR_6102(6102, "您已预约看粮"),
	
	// 基础数据模块
	ERR_7000(7000, "仓库名称不能为空"),
	ERR_7001(7001, "检验机构名称不能为空"),
	
	// 小程序通用出错信息
	XCX_ERR_8001(8001, "用户不存在"),
	XCX_ERR_8002(8002, "手机号格式有误"),
	XCX_ERR_8003(8003, "手机号已被注册"),
	XCX_ERR_8004(8004, "60秒内不允许重复发送"),
	XCX_ERR_8005(8005, "短信发送失败"),
	XCX_ERR_8006(8006, "请先发送验证码"), 
	XCX_ERR_8007(8007, "验证码错误"),
	XCX_ERR_8008(8008, "手机号不能为空"),
	XCX_ERR_8009(8009, "绑定成功，登录失败"),
	XCX_ERR_8010(8010, "获取登录状态失败"),
	XCX_ERR_8011(8011, "注册失败，请稍后再试"),
	
	// 小程序API出错信息
	XCX_ERR_8101(8101, "与第三方通讯失败"),
	XCX_ERR_8102(8102, "获取微信session_key失败"),
	XCX_ERR_8103(8103, "用户身份已过期"),
	XCX_ERR_8104(8104, "用户敏感数据解密失败"),
	XCX_ERR_8105(8105, "请选择上传文件"),
	XCX_ERR_8106(8106, "上传失败"),
	
	// token相关
	TOKEN_ERR_8201(8201, "appid不能为空"),
	TOKEN_ERR_8202(8202, "未查询到相关配置"),
	TOKEN_ERR_8203(8203, "获取accessToken失败"),
	TOKEN_ERR_8204(8204, "自定义微信错误消息"),
	TOKEN_ERR_8205(8205, "获取jsApiTicket失败"),
	TOKEN_ERR_8206(8206, "secret不能为空"),
	
	// 消息模块错误信息
	MESSAGE_ERR_8301(8301, "openid不能为空"),
	MESSAGE_ERR_8302(8302, "未定义消息模板"),
	MESSAGE_ERR_8303(8303, "未定义模板消息内容"),
	MESSAGE_ERR_8304(8304, "推送微信消息模版时json解析有误，请查看参数是否正确"),
	MESSAGE_ERR_8305(8305, "推送微信消息模版失败，返回结果为空"),
	MESSAGE_ERR_8306(8306, "该模板已删除"),
	MESSAGE_ERR_8307(8307, "FormId不存在"),
	MESSAGE_ERR_8308(8308, "formid不能为空"),
	MESSAGE_ERR_8309(8309, "手机号码格式有误"),
	MESSAGE_ERR_8310(8310, "模板消息未定义accessKeyId"),
	MESSAGE_ERR_8311(8311, "未配置阿里云短信消息通道"),
	MESSAGE_ERR_8312(8312, "发送阿里云短消息失败，返回结果为空"),
	MESSAGE_ERR_8313(8313, "收件人邮箱地址不能为空"),
	MESSAGE_ERR_8314(8314, "收件人邮箱地址格式有误"),
	MESSAGE_ERR_8315(8315, "未配置阿里云邮件消息通道"),
	MESSAGE_ERR_8316(8316, "发送阿里云邮件消息失败，返回结果为空"),
	MESSAGE_ERR_8317(8317, "apush的token已过期"),
	MESSAGE_ERR_8318(8318, "获取apush的token失败"),
	;
	
	private int code;
	private String message;

	private ResultEnum(int code, String message)
	{
		this.code = code;
		this.message = message;
	}

	public int getCode()
	{
		return code;
	}

	public void setCode(Integer code)
	{
		this.code = code;
	}

	public String getMessage()
	{
		return message;
	}

	public void setMessage(String message)
	{
		this.message = message;
	}
	
	@Override
	public String toString()
	{
		return String.format("result code [%s] message [%s]", code, message);
	}
}
